﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Data;
using BUS;
using DTO;

namespace DuanGiuaKy
{
    public partial class frm_adm_qlSinhVien : Form
    {
        //
        int flagForm = 1; // 1. Form them moi 2. Form chinh sua 3.Xem thong tin
        // member variable
        private DataTable thongTinSV;

        public frm_adm_qlSinhVien()
        {
            InitializeComponent();
        }
        // constructor cho editor
        public frm_adm_qlSinhVien(int flag, string masv)
        {
            InitializeComponent();
            // danh dau form
            if (flag == 2) // form chinh sua
                flagForm = 2;
            else if (flag == 3) // form xem thong tin
                flagForm = 3;
            // gan gia tri
            try
            {
                thongTinSV = SinhVien_BUS.layThongTinSV(masv);
            }
            catch
            {
                MessageBox.Show("Không lấy được thông tin sinh viên bạn chọn, vui lòng chọn lại!", "Lỗi", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }
        // load danh sach khoa to combobox
        private void LoadDSKhoa()
        {
            //SqlConnection conn = new SqlConnection(@"Data Source=TOM-PC\sqlexpress;Initial Catalog=Northwind;User ID=sa;Password=xyz");
            //conn.Open();
            //SqlCommand sc = new SqlCommand("select customerid,contactname from customers", conn);
            //SqlDataReader reader;

            //reader = sc.ExecuteReader();
            //DataTable dt = new DataTable();
            //dt.Columns.Add("customerid", typeof(string));
            //dt.Columns.Add("contactname", typeof(string));
            //dt.Load(reader);

            //comboBox1.ValueMember = "customerid";
            //comboBox1.DisplayMember = "contactname";
            //comboBox1.DataSource = dt;

            //conn.Close();
        }
        // load danh sach chuong trinh dao tao
        private void LoadDSChuongTrinhDaoTao()
        {

        }
        // load danh sach lop sinh vien
        private void LoadDSLopSinhVien()
        {

        }
        // load danh sach co van hoc tap
        private void LoadDSCoVanHocTap()
        {

        }
        // load du lieu tu datagridview vao textbox & combobox
        private void loadDuLieuVaoTextBox()
        {
            try
            {
                txtMaSV.Text = thongTinSV.Rows[0]["MaSV"].ToString();
                txtHoTen.Text = thongTinSV.Rows[0]["HoTen"].ToString();
                txtNgSinh.Text = thongTinSV.Rows[0]["NgSinh"].ToString();
                txtNoiSinh.Text = thongTinSV.Rows[0]["NoiSinh"].ToString();
                cboGioiTinh.Text = thongTinSV.Rows[0]["GioiTinh"].ToString();
                txtDanToc.Text = thongTinSV.Rows[0]["DanToc"].ToString();
                txtCMND.Text = thongTinSV.Rows[0]["SoCMND"].ToString();
                txtSoDt.Text = thongTinSV.Rows[0]["DienThoai"].ToString();
                txtDiaChi.Text = thongTinSV.Rows[0]["DiaChi"].ToString();
                txtEmail.Text = thongTinSV.Rows[0]["Email"].ToString();
                cboLoaiSinhVien.Text = thongTinSV.Rows[0]["LoaiSV"].ToString();
                cboKhoa.Text = thongTinSV.Rows[0]["Khoa"].ToString();
                cboTinhTrang.Text = thongTinSV.Rows[0]["TinhTrang"].ToString();
                txtKhoaHoc.Text = thongTinSV.Rows[0]["KhoaHoc"].ToString();
                txtNienKhoa.Text = thongTinSV.Rows[0]["NienKhoa"].ToString();
                txtNamNhapHoc.Text = thongTinSV.Rows[0]["NamNhapHoc"].ToString();
                txtNamHetHan.Text = thongTinSV.Rows[0]["NamKetThuc"].ToString();
                cboCTDT.Text = thongTinSV.Rows[0]["ChuongTrinhDaoTao"].ToString();
                cboLopSV.Text = thongTinSV.Rows[0]["Lop"].ToString();
                cboCVHT.Text = thongTinSV.Rows[0]["CVHT"].ToString();
                txtGhiChu.Text = thongTinSV.Rows[0]["GhiChu"].ToString();
            }
            catch
            {
                MessageBox.Show("Không lấy được thông tin sinh viên bạn chọn, vui lòng chọn lại!", "Lỗi", MessageBoxButtons.OK, MessageBoxIcon.Error);
                this.Close();
            }
        }
        private void frm_qlSinhVien_Load(object sender, EventArgs e)
        {
            switch (flagForm)
            {
                case 1:
                    btnSubmit.Text = "Thêm mới";
                    this.Text = "Thêm mới sinh viên";
                    LoadDSKhoa();
                    LoadDSChuongTrinhDaoTao();
                    LoadDSCoVanHocTap();
                    LoadDSLopSinhVien();
                    txtMaSV.Text = " ";
                    txtMaSV.Focus();
                    break;
                case 2:
                    btnSubmit.Text = "Sửa đổi";
                    this.Text = "Sửa thông tin sinh viên";
                    loadDuLieuVaoTextBox();
                    break;
                case 3:
                    this.Text = "Thông tin sinh viên";
                    foreach (Control c in Controls)
                    {
                        c.Enabled = false; // disable tat ca cac item trong form
                    }
                    loadDuLieuVaoTextBox();
                    btnThoat.Enabled = true;
                    break;
                default:
                    break;
            }
        }
        // check error form
        private int errorLog()
        {
            int error = 0;
            // start checking
            if (txtMaSV.Text.Length == 0)
                error++;
            else if (txtMaSV.Text == " ")
                error++;
            if (txtHoTen.Text.Length == 0)
                error++;
            if (txtNgSinh.Text.Length == 0)
                error++;
            if (cboGioiTinh.Text.Length == 0)
                error++;
            if (txtDanToc.Text.Length == 0)
                error++;
            if (txtCMND.Text.Length == 0)
                error++;
            if (txtSoDt.Text.Length == 0)
                error++;
            if (txtDiaChi.Text.Length == 0)
                error++;
            if (txtEmail.Text.Length == 0)
                error++;
            if (cboLoaiSinhVien.Text.Length == 0)
                error++;
            if (cboKhoa.Text.Length == 0)
                error++;
            if (cboTinhTrang.Text.Length == 0)
                error++;
            if (txtKhoaHoc.Text.Length == 0)
                error++;
            if (txtNienKhoa.Text.Length == 0)
                error++;
            if (txtNamNhapHoc.Text.Length == 0)
                error++;
            if (txtNamHetHan.Text.Length == 0)
                error++;
            if (cboCTDT.Text.Length == 0)
                error++;
            if (cboLopSV.Text.Length == 0)
                error++;
            if (cboCVHT.Text.Length == 0)
                error++;
            // 
            return error;
        }
        private void btnSubmit_Click(object sender, EventArgs e)
        {
            if(flagForm == 1) // them moi sinh vien
            {
                int error = errorLog();
                if(error > 0)
                {
                    MessageBox.Show("Điền đủ thông tin để tiếp tục", "Cảnh Báo", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                } else
                {
                    SinhVien_DTO sv = new SinhVien_DTO(txtMaSV.Text, txtHoTen.Text, txtNgSinh.Text, txtNoiSinh.Text, txtDanToc.Text, cboGioiTinh.Text, txtCMND.Text, cboLoaiSinhVien.Text, cboTinhTrang.Text, cboKhoa.Text, txtDiaChi.Text, txtSoDt.Text, txtEmail.Text, txtGhiChu.Text);
                    KhoaHoc_DTO kh = new KhoaHoc_DTO(txtKhoaHoc.Text, txtNienKhoa.Text, txtNamNhapHoc.Text, txtNamHetHan.Text, cboCTDT.Text, cboLopSV.Text, cboCVHT.Text);
                    SinhVien_BUS.themSinhVien(sv, kh);
                    this.Close();
                }
            } else if (flagForm == 2) // form sua
            {
                int error = errorLog();
                if (error > 0)
                {
                    MessageBox.Show("Điền đủ thông tin để tiếp tục", "Cảnh Báo", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                }
                else
                {
                    SinhVien_DTO sv = new SinhVien_DTO(txtMaSV.Text, txtHoTen.Text, txtNgSinh.Text, txtNoiSinh.Text, txtDanToc.Text, cboGioiTinh.Text, txtCMND.Text, cboLoaiSinhVien.Text, cboTinhTrang.Text, cboKhoa.Text, txtDiaChi.Text, txtSoDt.Text, txtEmail.Text, txtGhiChu.Text);
                    KhoaHoc_DTO kh = new KhoaHoc_DTO(txtKhoaHoc.Text, txtNienKhoa.Text, txtNamNhapHoc.Text, txtNamHetHan.Text, cboCTDT.Text, cboLopSV.Text, cboCVHT.Text);
                    SinhVien_BUS.suaThongTinSinhVien(sv, kh);
                    this.Close();
                }
            }
        }

        private void txtMaSV_Leave(object sender, EventArgs e)
        {
            if(txtMaSV.Text.Length == 0)
            {
                MessageBox.Show("Nhập mã sinh viên để tiếp tục", "Cảnh báo", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                txtMaSV.Focus();
            } else if(txtMaSV.Text.Length > 15)
            {
                MessageBox.Show("Mã sinh viên không thể dài hơn 15 ký tự", "Cảnh báo", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                txtMaSV.Focus();
            }
            else if (BUS.SinhVien_BUS.kiemTraMaSV(txtMaSV.Text) && flagForm == 1)
            {
                MessageBox.Show("Mã sinh viên đã được sử dụng", "Cảnh báo", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                txtMaSV.Focus();
            }
        }

        private void txtHoTen_Leave(object sender, EventArgs e)
        {
            if(txtHoTen.Text.Length == 0)
            {
                MessageBox.Show("Nhập họ tên sinh viên để tiếp tục", "Cảnh báo", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                txtHoTen.Focus();
            }
        }

        private void txtNgSinh_Leave(object sender, EventArgs e)
        {
            if (txtNgSinh.Text.Length == 0)
            {
                MessageBox.Show("Nhập ngày sinh để tiếp tục", "Cảnh báo", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                txtNgSinh.Focus();
            }
        }

        private void txtNoiSinh_Leave(object sender, EventArgs e)
        {
            if (txtNoiSinh.Text.Length == 0)
            {
                MessageBox.Show("Nhập nơi sinh để tiếp tục", "Cảnh báo", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                txtNoiSinh.Focus();
            }
        }

        private void cboGioiTinh_Leave(object sender, EventArgs e)
        {
            if (cboGioiTinh.Text.Length == 0)
            {
                MessageBox.Show("Chọn giới tính để tiếp tục", "Cảnh báo", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                cboGioiTinh.Focus();
            }
        }

        private void txtDanToc_Leave(object sender, EventArgs e)
        {
            if (txtDanToc.Text.Length == 0)
            {
                MessageBox.Show("Nhập dân tộc để tiếp tục", "Cảnh báo", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                txtDanToc.Focus();
            }
        }

        private void txtCMND_Leave(object sender, EventArgs e)
        {
            if (txtCMND.Text.Length == 0)
            {
                MessageBox.Show("Nhập số CMND để tiếp tục", "Cảnh báo", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                txtCMND.Focus();
            }
        }

        private void txtSoDt_Leave(object sender, EventArgs e)
        {
            if (txtSoDt.Text.Length == 0)
            {
                MessageBox.Show("Nhập số CMND để tiếp tục", "Cảnh báo", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                txtSoDt.Focus();
            }
        }

        private void txtDiaChi_Leave(object sender, EventArgs e)
        {
            if (txtDiaChi.Text.Length == 0)
            {
                MessageBox.Show("Nhập số điện thoại để tiếp tục", "Cảnh báo", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                txtDiaChi.Focus();
            }
        }

        private void txtEmail_Leave(object sender, EventArgs e)
        {
            if (txtEmail.Text.Length == 0)
            {
                MessageBox.Show("Nhập số điện thoại để tiếp tục", "Cảnh báo", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                txtEmail.Focus();
            }
        }

        private void cboLoaiSinhVien_Leave(object sender, EventArgs e)
        {
            if (cboLoaiSinhVien.Text.Length == 0)
            {
                MessageBox.Show("Chọn loại sinh viên để tiếp tục", "Cảnh báo", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                cboLoaiSinhVien.Focus();
            }
        }

        private void cboKhoa_Leave(object sender, EventArgs e)
        {
            if (cboKhoa.Text.Length == 0)
            {
                MessageBox.Show("Chọn khoa để tiếp tục", "Cảnh báo", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                cboKhoa.Focus();
            }
        }

        private void cboTinhTrang_Leave(object sender, EventArgs e)
        {
            if (cboTinhTrang.Text.Length == 0)
            {
                MessageBox.Show("Chọn tình trạng sinh viên để tiếp tục", "Cảnh báo", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                cboTinhTrang.Focus();
            }
        }

        private void txtKhoaHoc_Leave(object sender, EventArgs e)
        {
            if (txtKhoaHoc.Text.Length == 0)
            {
                MessageBox.Show("Nhập khóa học để tiếp tục", "Cảnh báo", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                txtKhoaHoc.Focus();
            }
        }

        private void txtNienKhoa_Leave(object sender, EventArgs e)
        {
            if (txtNienKhoa.Text.Length == 0)
            {
                MessageBox.Show("Nhập niên khóa để tiếp tục", "Cảnh báo", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                txtNienKhoa.Focus();
            }
        }

        private void txtNamNhapHoc_Leave(object sender, EventArgs e)
        {
            if (txtNamNhapHoc.Text.Length == 0)
            {
                MessageBox.Show("Nhập năm nhập học để tiếp tục", "Cảnh báo", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                txtNamNhapHoc.Focus();
            }
        }

        private void txtNamHetHan_Leave(object sender, EventArgs e)
        {
            if (txtNamHetHan.Text.Length == 0)
            {
                MessageBox.Show("Nhập năm hết hạn để tiếp tục", "Cảnh báo", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                txtNamHetHan.Focus();
            }
        }

        private void cboCTDT_Leave(object sender, EventArgs e)
        {
            if (cboCTDT.Text.Length == 0)
            {
                MessageBox.Show("Chọn chương trình đào tạo để tiếp tục", "Cảnh báo", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                cboCTDT.Focus();
            }
        }

        private void cboLopSV_Leave(object sender, EventArgs e)
        {
            if (cboLopSV.Text.Length == 0)
            {
                MessageBox.Show("Chọn lớp sinh viên để tiếp tục", "Cảnh báo", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                cboLopSV.Focus();
            }
        }

        private void cboCVHT_Leave(object sender, EventArgs e)
        {
            if (cboCVHT.Text.Length == 0)
            {
                MessageBox.Show("Chọn cố vấn học tập để tiếp tục", "Cảnh báo", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                cboCVHT.Focus();
            }
        }

        private void btnNhapLai_Click(object sender, EventArgs e)
        {
            if(flagForm == 1)
            {
                txtMaSV.Text = " ";
                txtMaSV.Focus();
                txtHoTen.Text = "";
                txtNgSinh.Text = "";
                txtNoiSinh.Text = "";
                cboGioiTinh.Text = "";
                txtDanToc.Text = "";
                txtCMND.Text = "";
                txtSoDt.Text = "";
                txtDiaChi.Text = "";
                txtEmail.Text = "";
                cboLoaiSinhVien.Text = "";
                cboKhoa.Text = "";
                cboTinhTrang.Text = "";
                txtKhoaHoc.Text = "";
                txtNienKhoa.Text = "";
                txtNamNhapHoc.Text = "";
                txtNamHetHan.Text = "";
                cboCTDT.Text = "";
                cboLopSV.Text = "";
                cboCVHT.Text = "";
                txtGhiChu.Text = "";
            } else
            {
                loadDuLieuVaoTextBox();
            }

        }

        private void btnThoat_Click(object sender, EventArgs e)
        {
            DialogResult result1 = MessageBox.Show("Bạn có muốn thoát?", "Question", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
            if(result1 == DialogResult.Yes)
                this.Close();
        }

    }
}
